function FindGreatestSumOfSubArray(array)
{
    // write code here
    // 对于这样一个子数组[1,-2,3,10,-4,7,2,-5] 他所包含的子数组 肯定都是以这个数组内的数字来结尾的
    // 假设f(i)为a[i]为结尾的所有子数组的最大和
    // 判断几种条件
    // 1. f(i) < 0  f(i+1) 就是a[i+1] 以a[i+1]为结尾的所有子数组的最大和 就是a[i+1]
    // 2. f(i) > 0 f(i+1) 就是f(i) + ai+1 以a[i+1]为结尾的所有子数组的最大和 可能是 f(i) 或者是f(i) + a[i+1] 因为这时不知道这个a[i+1]是不是大于0

    // 设置第一个cursum为初始的 因为对于一个数字前面没有任何值 他的最大值肯定就是0
    var cursum = 0
    // 设置res 代表最大的 初始设为第一个数字
    var res = array[0]
    // 遍历数组中的每一个数字
    for(let i of array){
        // of遍历的话是 数字
        // 如果之前的和大于0 那么加上后面的值 可能变大 也可能变小
        if(cursum >= 0){
            cursum += i
        }else {
            // 如果之前的小于0 那么加上后面的值 以后面的值为结尾的子数组中 最大的就是单独后面的值
            cursum = i
        }
        // 最后判断一下 记录的最大值和计算的到的子数组的最大值谁大 
        res = res > cursum ? res : cursum
    }
    return res
}
module.exports = {
    FindGreatestSumOfSubArray : FindGreatestSumOfSubArray
};